home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / library / code.lua next >
Encoding:
Text File  |  2005-07-16  |  6.2 KB  |  165 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky02.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         room.oknihach = random(1000) + 500
  16.         if pokus > 1 and random(100) < 20 then
  17.             room.oknihach = -1
  18.         end
  19.         room.rada = random(1000) + 1000
  20.         room.uvod = 0
  21.         room.restrt = 0
  22.         room.oost = 0
  23.         room.zavazim = 0
  24.         room.zavaziv = 0
  25.         room.vlevo = 0
  26.  
  27.         return function()
  28.             if no_dialog() and isReady(small) and isReady(big) then
  29.                 if room.oknihach > 0 then
  30.                     room.oknihach = room.oknihach - 1
  31.                 end
  32.                 if room.oknihach < -2 then
  33.                     room.oknihach = room.oknihach + 1
  34.                 end
  35.                 if room.rada > 0 then
  36.                     room.rada = room.rada - 1
  37.                 end
  38.                 if room.uvod == 0 then
  39.                     room.uvod = 1
  40.                     if pokus == 1 or random(100) < 70 then
  41.                         addv(10, "vrak-v-vraky"..random(3))
  42.                     end
  43.                     if pokus == 1 or random(100) < 70 then
  44.                         addm(10, "vrak-m-vrak"..random(3))
  45.                     end
  46.                 elseif room.oknihach == 0 or room.oknihach > 0 and big.X >= 12 then
  47.                     room.oknihach = -100
  48.                     if big.X >= 12 then
  49.                         addv(3, "vrak-v-nevejdu"..random(2))
  50.                     end
  51.                     addm(10, "vrak-m-kupovat"..random(2))
  52.                     addm(10, "vrak-m-naco")
  53.                     room.vyber = {}
  54.                     for pom2 = 1, 3 + random(2) do
  55.                         repeat
  56.                             pom1 = random(7)
  57.                         until not room.vyber[pom1]
  58.                         room.vyber[pom1] = true
  59.                         addm(random(10) + 5, "vrak-m-knihy"..pom1)
  60.                     end
  61.                     addv(20 + random(20), "vrak-v-vyhodit")
  62.                     room.vyber = {}
  63.                     for pom2 = 1, 2 + random(2) do
  64.                         repeat
  65.                             pom1 = random(5)
  66.                         until not room.vyber[pom1]
  67.                         room.vyber[pom1] = true
  68.                         addv(random(10) + 5, "vrak-v-knihy"..pom1)
  69.                     end
  70.                     addm(0, "vrak-m-pohadky")
  71.                 elseif room.rada == 0 then
  72.                     room.rada = -1
  73.                     pom1 = random(3) + 1
  74.                     if odd(pom1) then
  75.                         addv(random(20) + 20, "vrak-v-policky")
  76.                     end
  77.                     if pom1 >= 2 then
  78.                         addm(random(20) + 20, "vrak-m-predmety")
  79.                     end
  80.                 elseif room.oknihach == -2 and big.X >= 12 then
  81.                     room.oknihach = -500
  82.                     addm(5, "vrak-m-cteni"..random(3))
  83.                 elseif oost == 0 and dist(small, sklibak) < 5 and random(100) < 3 then
  84.                     room.oost = 1
  85.                     addm(random(10) + 5, "vrak-m-ostnatec")
  86.                 elseif zavazim == 0 and (sklibak.X == 10 and sklibak.Y == 31) and dist(small, sklibak) <= 1 then
  87.                     room.oost = 1
  88.                     room.zavazim = 1
  89.                     addm(3, "vrak-m-zivocich")
  90.                 elseif zavaziv == 0 and (sklibak.X == 8 and sklibak.Y == 5 or sklibak.X == 10 and sklibak.Y == 31) and dist(big, sklibak) <= 1 then
  91.                     room.oost = 1
  92.                     room.zavaziv = 1
  93.                     addv(3, "vrak-v-potvurka")
  94.                 elseif room.vlevo == 0 and sklibak.X == 10 and sklibak.Y == 31 and random(100) < 2 then
  95.                     room.vlevo = 1
  96.                     addv(5, "vrak-v-snek")
  97.                     if trubka.X == trubka.XStart and trubka.Y == trubka.YStart then
  98.                         addm(3, "vrak-m-ocel")
  99.                         addm(40 + random(40), "vrak-m-restart")
  100.                         room.restrt = 1
  101.                     end
  102.                 elseif room.restrt == 0 and sklibak.X < 8 and sklibak.Y == 5 then
  103.                     addm(40 + random(40), "vrak-m-restart")
  104.                     room.restrt = 1
  105.                 elseif room.restrt == 0 and sklibak.X > 10 and sklibak.Y == 31 then
  106.                     addm(40 + random(40), "vrak-m-restart")
  107.                     room.restrt = 1
  108.                 end
  109.             end
  110.         end
  111.     end
  112.  
  113.     -- -------------------------------------------------------------
  114.     local function prog_init_sklibak()
  115.         return function()
  116.             if math.mod(game_getCycles(), 2) == 0 then
  117.                 local anim_table = {
  118.                     [0] = function() 
  119.                         if random(100) < 5 then
  120.                             sklibak.afaze = 1 - sklibak.afaze
  121.                         end
  122.                         if sklibak.dir ~= dir_no then
  123.                             sklibak.afaze = 2
  124.                         end
  125.                     end,
  126.                     [2] = function()
  127.                         if random(100) < 3 then
  128.                             sklibak.afaze = random(2)
  129.                         end
  130.                     end,
  131.                 }
  132.                 anim_table[1] = anim_table[0]
  133.  
  134.                 switch(sklibak.afaze)(anim_table)
  135.             end
  136.             sklibak:updateAnim()
  137.         end
  138.     end
  139.  
  140.     -- --------------------
  141.     local update_table = {}
  142.     local subinit
  143.     subinit = prog_init_room()
  144.     if subinit then
  145.         table.insert(update_table, subinit)
  146.     end
  147.     subinit = prog_init_sklibak()
  148.     if subinit then
  149.         table.insert(update_table, subinit)
  150.     end
  151.     return update_table
  152. end
  153. local update_table = prog_init()
  154.  
  155.  
  156. -- -----------------------------------------------------------------
  157. -- Update
  158. -- -----------------------------------------------------------------
  159. function prog_update()
  160.     for key, subupdate in pairs(update_table) do
  161.         subupdate()
  162.     end
  163. end
  164.  
  165.